package com.jdd.modules.sdk;

import java.io.IOException;
import java.util.Date;

import javax.annotation.Resource;

import org.springframework.stereotype.Component;

import com.jdd.common.constant.JddConstant;
import com.jdd.common.util.CacheUtil;
import com.jdd.modules.parking.entity.ConfigParkInfo;
import com.jdd.modules.parking.service.IConfigParkInfoService;
import com.jdd.modules.sdk.ledcall.AnKuaiLedCallInterface;
import com.jdd.modules.sdk.ledcall.FangKongLedCallInterface;
import com.jdd.modules.sdk.ledcall.FeiLiDeLedCallInterface;
import com.jdd.modules.sdk.ledcall.QiXieLedCallInterface;
import com.jdd.modules.sdk.ledcall.QianYiLedCallInterface;
import com.jdd.modules.sdk.ledcall.SmallFangKongLedCallInterface;
import com.jdd.modules.sdk.ledcall.XiaoMingLedCallInterface;
import com.jdd.modules.sdk.ledcall.YangZhongLaiBlueLedCallInterface;
import com.jdd.modules.sdk.ledcall.YangZhongLaiGreenLedCallInterface;
import com.jdd.modules.sdkidentifyresultpushlog.entity.DiscountCouponDetail;
import com.jdd.modules.sdkidentifyresultpushlog.entity.ParkOrderInfoVO;

import cn.hutool.core.util.ObjectUtil;
import lombok.extern.slf4j.Slf4j;

/**
 * @version 1.0
 * @Description:
 * @author： jdd尚岳
 * @Date: 2021-08-10 15:31
 */
@Component
@Slf4j
public abstract class LedCallInterface {
    @Resource
    private FangKongLedCallInterface fangkong;
    @Resource
    private QianYiLedCallInterface qianyi;
    @Resource
    private FeiLiDeLedCallInterface feilide;
    @Resource
    private XiaoMingLedCallInterface xiaoming;
    @Resource
    private QiXieLedCallInterface qixie;
    @Resource
    private SmallFangKongLedCallInterface smallfangkong;
    @Resource
    private YangZhongLaiGreenLedCallInterface yangZhongLaiGreen;
    @Resource
    private YangZhongLaiBlueLedCallInterface yangZhongLaiBlue;
    @Resource
    private AnKuaiLedCallInterface anKuai;
    @Resource
    private IConfigParkInfoService configParkInfoService;
    @Resource
    private CacheUtil cacheUtil;
    /**
     * @return
     * @Description 无牌车入口显示播报
     * @author shangyue
     * @Date 2021-08-10
     */
    public abstract void EntranceUnlicensed(String serialNo);

    /**
     * @param serialNo
     * @return void
     * @Description 无牌车入口显示播报通用入口
     * @author lcy
     * @date 2021/8/12 11:41
     */
    public void EntranceUnlicensedAll(String serialNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.EntranceUnlicensed(serialNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.EntranceUnlicensed(serialNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.EntranceUnlicensed(serialNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.EntranceUnlicensed(serialNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.EntranceUnlicensed(serialNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.EntranceUnlicensed(serialNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.EntranceUnlicensed(serialNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.EntranceUnlicensed(serialNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.EntranceUnlicensed(serialNo);
        }
    }

    /**
     * @param serialNo
     * @return
     * @Description 特殊车辆如警车，白名单车入场播报
     * @author shangyue
     * @Date 2021-08-10
     */
    public abstract void EntranceSpecial(String serialNo, String plateNo) throws Exception;

    /**
     * @return void
     * @Description 特殊车辆如警车
     * @author lcy
     * @date 2021/8/12 11:42
     */
    public void EntranceSpecialAll(String serialNo, String plateNo) throws Exception {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.EntranceSpecial(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.EntranceSpecial(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.EntranceSpecial(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.EntranceSpecial(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.EntranceSpecial(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.EntranceSpecial(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.EntranceSpecial(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.EntranceSpecial(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.EntranceSpecial(serialNo, plateNo);
        }
    }

    public void EntranceWhite(String serialNo, String plateNo) throws Exception {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.EntranceWhite(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.EntranceSpecial(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.EntranceWhite(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.EntranceSpecial(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.EntranceSpecial(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.EntranceWhite(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.EntranceSpecial(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.EntranceSpecial(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.EntranceSpecial(serialNo, plateNo);
        }
    }

    /**
     * @return void
     * @author lcy
     * @date 2021/8/12 14:11
     * @Description 白名单过期按照临时车
     */
    public abstract void EntranceParkWhiteOver(String serialNo, String plateNo);

    /**
     * @return void
     * @author lcy
     * @date 2021/8/12 14:34
     * @Description 白名单过期按照临时车通用入口
     */
    public void EntranceParkWhiteOverAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.EntranceParkWhiteOver(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.EntranceParkWhiteOver(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.EntranceParkWhiteOver(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.EntranceParkWhiteOver(serialNo,plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.EntranceParkWhiteOver(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.EntranceParkWhiteOver(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.EntranceParkWhiteOver(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.EntranceParkWhiteOver(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.EntranceParkWhiteOver(serialNo, plateNo);
        }
    }

    /**
     * @param serialNo
     * @return
     * @Description 黑名单禁止通行播报
     * @author shangyue
     * @Date 2021-08-10
     */
    public abstract void EntranceBlacklist(String serialNo, String plateNo);

    /**
     * @author lcy
     * @date 2021/8/12
     * @Description 黑名单禁止通行播报，通用入口
     */
    public void EntranceBlacklistAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.EntranceBlacklist(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.EntranceBlacklist(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.EntranceBlacklist(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.EntranceBlacklist(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.EntranceBlacklist(serialNo,plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.EntranceBlacklist(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.EntranceBlacklist(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.EntranceBlacklist(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.EntranceBlacklist(serialNo, plateNo);
        }
    }

    /**
     * @param serialNo
     * @return
     * @Description 月租车入场播报
     * @author shangyue
     * @Date 2021-08-10
     */
    public abstract void MonthlyEntrance(String serialNo, String plateNo,String broadcastInfo) throws IOException;

    /**
     * @return
     * @author lcy
     * @date 2021/8/12 11:52
     * @Description 月租车入场播报通用方法
     */
    public void MonthlyEntranceAll(String serialNo, String plateNo,String broadcastInfo) throws IOException {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.MonthlyEntrance(serialNo, plateNo,broadcastInfo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.MonthlyEntrance(serialNo, plateNo,broadcastInfo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.MonthlyEntrance(serialNo,plateNo,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.MonthlyEntrance(serialNo,plateNo,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.MonthlyEntrance(serialNo,plateNo,broadcastInfo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.MonthlyEntrance(serialNo,plateNo,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.MonthlyEntrance(serialNo, plateNo,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.MonthlyEntrance(serialNo, plateNo,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.MonthlyEntrance(serialNo, plateNo,broadcastInfo);
        }
    }

    /**
     * @return void
     * @author lcy
     * @date 2021/8/12 14:12
     * @Description 月租车过期禁止进入
     */
    public abstract void BanMonthOver(String serialNo, String plateNo,Date endTime,String broadcastInfo) throws Exception;

    /**
     * @author lcy
     * @date 2021/8/12
     * @Description 月租车过期禁止进入, 通用入口
     */
    public void BanMonthOverAll(String serialNo, String plateNo, Date endTime,String broadcastInfo) throws Exception {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.BanMonthOver(serialNo, plateNo, endTime,broadcastInfo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.BanMonthOver(serialNo, plateNo, endTime,broadcastInfo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.BanMonthOver(serialNo,plateNo,endTime,broadcastInfo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.BanMonthOver(serialNo,plateNo,endTime,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.BanMonthOver(serialNo,plateNo,endTime,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.BanMonthOver(serialNo,plateNo,endTime,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.BanMonthOver(serialNo, plateNo,endTime,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.BanMonthOver(serialNo, plateNo,endTime,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.BanMonthOver(serialNo, plateNo,endTime,broadcastInfo);
        }
    }

    /**
     * @param serialNo
     * @return
     * @Description 月租车过期按照临时车收费播报
     * @author shangyue
     * @Date 2021-08-10
     */
    public abstract void EntranceMonthlyOverdue(String serialNo, String plateNo) throws Exception;

    /**
     * @return void
     * @author lcy
     * @date 2021/8/12 11:50
     * @Description 月租车过期临时收费通用入口
     */
    public void EntranceMonthlyOverdueAll(String serialNo, String plateNo) throws Exception {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.EntranceMonthlyOverdue(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.EntranceMonthlyOverdue(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.EntranceMonthlyOverdue(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.EntranceMonthlyOverdue(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.EntranceMonthlyOverdue(serialNo,plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.EntranceMonthlyOverdue(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.EntranceMonthlyOverdue(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.EntranceMonthlyOverdue(serialNo, plateNo);
        }
    }

    /**
     * @return void
     * @author lcy
     * @date 2021/8/12 14:14
     * @Description 过期N天内可进入
     */
    public abstract void EnranceMonthOverCan(String serialNo, String plateNo);

    /**
     * @author lcy
     * @date 2021/8/12
     * @Description 过期N天内可进入, 通用入口
     */
    public void EntranceMonthOverCanAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.EnranceMonthOverCan(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.EnranceMonthOverCan(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.EnranceMonthOverCan(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.EnranceMonthOverCan(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.EnranceMonthOverCan(serialNo,plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.EnranceMonthOverCan(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.EnranceMonthOverCan(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.EnranceMonthOverCan(serialNo, plateNo);
        }
    }

    /**
     * @return void
     * @author lcy
     * @date 2021/8/12 14:13
     * @Description 过期N天不可进入
     */
    public abstract void BanMonthOverDay(String serialNo, String plateNo, Date endTimes) throws Exception;

    /**
     * @author lcy
     * @date 2021/8/12
     * @Description 过期N天不可进入, 通用入口
     */
    public void BanMonthOverDayAll(String serialNo, String plateNo, Date endTimes) throws Exception {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.BanMonthOverDay(serialNo, plateNo, endTimes);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.BanMonthOverDay(serialNo, plateNo, endTimes);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.BanMonthOverDay(serialNo,plateNo,endTimes);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.BanMonthOverDay(serialNo,plateNo,endTimes);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.BanMonthOverDay(serialNo,plateNo,endTimes);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.BanMonthOverDay(serialNo,plateNo,endTimes);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.BanMonthOverDay(serialNo, plateNo,endTimes);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.BanMonthOverDay(serialNo, plateNo,endTimes);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.BanMonthOverDay(serialNo, plateNo,endTimes);
        }
    }

    /**
     * @param serialNo
     * @return
     * @Description 禁行时间段内播报
     * @author shangyue
     * @Date 2021-08-10
     */
    public abstract void JudgeStopDay(String serialNo, String plateNo);

    /**
     * @author lcy
     * @date 2021/8/12
     * @Description 临时车与月租车还有储值车禁行播报通用入口
     */
    public void JudgeStopDayAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.JudgeStopDay(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.JudgeStopDay(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.JudgeStopDay(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.JudgeStopDay(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.JudgeStopDay(serialNo,plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.JudgeStopDay(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.JudgeStopDay(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.JudgeStopDay(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.JudgeStopDay(serialNo, plateNo);
        }
    }

    /**
     * @param serialNo
     * @return
     * @Description 临时车入场播报
     * @author shangyue
     * @Date 2021-08-10
     */
    public abstract void TemporaryEntrance(String serialNo, String plateNo) throws Exception;

    /**
     * @author lcy
     * @date 2021/8/12
     * @Description 临时车入场播报，通用入口
     */
    public void TemporaryEntranceAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.TemporaryEntrance(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.TemporaryEntrance(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.TemporaryEntrance(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.TemporaryEntrance(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.TemporaryEntrance(serialNo,plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.TemporaryEntrance(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.TemporaryEntrance(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.TemporaryEntrance(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.TemporaryEntrance(serialNo, plateNo);
        }
    }

    /**
     * @param serialNo
     * @return
     * @Description 临时车入场车位已满, 禁止通行
     * @author shangyue
     * @Date 2021-08-10
     */
    public abstract void TemporaryEntranceParkingFull(String serialNo, String plateNo);

    /**
     * @author lcy
     * @date 2021/8/12
     * @Description 临时车入场车位已满, 禁止通行, 通用入口
     */
    public void TemporaryEntranceParkingFullAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.TemporaryEntranceParkingFull(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.TemporaryEntranceParkingFull(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.TemporaryEntranceParkingFull(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.TemporaryEntranceParkingFull(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.TemporaryEntranceParkingFull(serialNo,plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.TemporaryEntranceParkingFull(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.TemporaryEntranceParkingFull(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.TemporaryEntranceParkingFull(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.TemporaryEntranceParkingFull(serialNo, plateNo);
        }
    }

    public abstract void TemporaryEntranceFullConfirmOpened(String serialNo, String plateN);

    /**
     * 临时车位已满 未配置已满禁行 确认开闸
     *
     * @param serialNo
     * @param plateNo
     * @return void
     * @author jdd孙庆伟
     * @date 2021/8/31 14:28:00
     * @version 1.0
     */
    public void TemporaryEntranceFullConfirmOpenedAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.TemporaryEntranceFullConfirmOpened(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.TemporaryEntranceFullConfirmOpened(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.TemporaryEntranceFullConfirmOpened(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.TemporaryEntranceFullConfirmOpened(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.TemporaryEntranceFullConfirmOpened(serialNo,plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.TemporaryEntranceFullConfirmOpened(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.TemporaryEntranceFullConfirmOpened(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.TemporaryEntranceFullConfirmOpened(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.TemporaryEntranceFullConfirmOpened(serialNo, plateNo);
        }
    }

    /**
     * @return void
     * @author lcy
     * @date 2021/8/12 14:22
     * @Description 临时车位未满配置自动开闸
     */
    public abstract void TemporaryEntranceInConfig(String serialNo, String plateNo);

    /**
     * @author lcy
     * @date 2021/8/12
     * @Description 临时车位未满配置自动开闸, 通用入口
     */
    public void TemporaryEntranceInConfigAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.TemporaryEntranceInConfig(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.TemporaryEntranceInConfig(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.TemporaryEntranceInConfig(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.TemporaryEntranceInConfig(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.TemporaryEntranceInConfig(serialNo,plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.TemporaryEntranceInConfig(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.TemporaryEntranceInConfig(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.TemporaryEntranceInConfig(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.TemporaryEntranceInConfig(serialNo, plateNo);
        }
    }

    /**
     * @return void
     * @author lcy
     * @date 2021/8/12 14:22
     * @Description 临时车位未满配置确认开闸
     */
    public abstract void TemporaryInConfig(String serialNo, String plateNo);

    /**
     * @author lcy
     * @date 2021/8/12
     * @Description 临时车位未满配置确认开闸, 通用入口
     */
    public void TemporaryInConfigAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.TemporaryInConfig(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.TemporaryInConfig(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.TemporaryInConfig(serialNo,plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.TemporaryInConfig(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.TemporaryInConfig(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.TemporaryInConfig(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.TemporaryInConfig(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.TemporaryInConfig(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.TemporaryInConfig(serialNo, plateNo);
        }
    }

    /**
     * @return
     * @Description 临时车位未满，禁止入场播报
     * @author shangyue
     * @Date 2021-08-10
     */
    public abstract void TemporaryBanEntrance(String serialNo,String plateNo);

    /**
     * @author lcy
     * @date 2021/8/12
     * @Description 临时车未满禁止入场播报, 通用入口
     */
    public void TemporaryBanEntranceAll(String serialNo,String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.TemporaryBanEntrance(serialNo,plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.TemporaryBanEntrance(serialNo,plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.TemporaryBanEntrance(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.TemporaryBanEntrance(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.TemporaryBanEntrance(serialNo,plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.TemporaryBanEntrance(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.TemporaryBanEntrance(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.TemporaryBanEntrance(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.TemporaryBanEntrance(serialNo, plateNo);
        }
    }

    /**
     * @return void
     * @author lcy
     * @date 2021/8/12 14:18
     * @Description 储值车配置自动开闸
     */
    public abstract void EntranceStoredInConfig(String serialNo, String plateNo);

    /**
     * @author lcy
     * @date 2021/8/12
     * @Description 储值车配置自动开闸，通用入口
     */
    public void EntranceStoredInConfigAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.EntranceStoredInConfig(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.EntranceStoredInConfig(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.EntranceStoredInConfig(serialNo,plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.EntranceStoredInConfig(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.EntranceStoredInConfig(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.EntranceStoredInConfig(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.EntranceStoredInConfig(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.EntranceStoredInConfig(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.EntranceStoredInConfig(serialNo, plateNo);
        }
    }

    /**
     * @return void
     * @author lcy
     * @date 2021/8/12 14:19
     * @Description 储值车配置手动开闸
     */
    public abstract void StoredInConfig(String serialNo, String plateNo);

    /**
     * @author lcy
     * @date 2021/8/12
     * @Description 储值车配置手动开闸, 通用入口
     */
    public void StoredInConfigAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.StoredInConfig(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.StoredInConfig(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.StoredInConfig(serialNo,plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.StoredInConfig(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.StoredInConfig(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.StoredInConfig(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.StoredInConfig(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.StoredInConfig(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.StoredInConfig(serialNo, plateNo);
        }
    }

    /**
     * @return void
     * @author lcy
     * @date 2021/8/12 14:19
     * @Description 储值车无配置自动开闸
     */
    public abstract void EntranceStoredNoConfig(String serialNo, String plateNo);

    /**
     * @author lcy
     * @date 2021/8/12
     * @Description 储值车无配置自动开闸, 通用入口
     */
    public void EntranceStoredNoConfigAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.EntranceStoredNoConfig(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.EntranceStoredNoConfig(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.EntranceStoredNoConfig(serialNo,plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.EntranceStoredNoConfig(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.EntranceStoredNoConfig(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.EntranceStoredNoConfig(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.EntranceStoredNoConfig(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.EntranceStoredNoConfig(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.EntranceStoredNoConfig(serialNo, plateNo);
        }
    }
    /*********************************出场********************************************/
    /**
     * @author lcy
     * @date 2021/8/13
     * @Description 无牌车出场
     */
    public abstract void OutUnlicensed(String serialNo);

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 无牌车出场通用
     */
    public void OutUnlicensedAll(String serialNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.OutUnlicensed(serialNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.OutUnlicensed(serialNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.OutUnlicensed(serialNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.OutUnlicensed(serialNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.OutUnlicensed(serialNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.OutUnlicensed(serialNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.OutUnlicensed(serialNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.OutUnlicensed(serialNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.OutUnlicensed(serialNo);
        }
    }

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 特殊车出场
     */
    public abstract void OutSpecial(String serialNo, String plateNo);

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 特殊车出场通用
     */
    public void OutSpecialAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.OutSpecial(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.OutSpecial(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.OutSpecial(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.OutSpecial(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.OutSpecial(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.OutSpecial(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.OutSpecial(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.OutSpecial(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.OutSpecial(serialNo, plateNo);
        }
    }

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 白名单出场
     */
    public abstract void OutParkWhite(String serialNo, String plateNo);

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 白名单出场通用
     */
    public void OutParkWhiteAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.OutParkWhite(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.OutParkWhite(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.OutParkWhite(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.OutParkWhite(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.OutParkWhite(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.OutParkWhite(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.OutParkWhite(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.OutParkWhite(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.OutParkWhite(serialNo, plateNo);
        }
    }

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 月租车出场
     */
    public abstract void OutMonthly(String serialNo, String plateNo);

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 月租车出场通用
     */
    public void OutMonthlyAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.OutMonthly(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.OutMonthly(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.OutMonthly(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.OutMonthly(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.OutMonthly(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.OutMonthly(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.OutMonthly(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.OutMonthly(serialNo, plateNo);
        }
    }

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 调用计费规则异常处理
     */
    public abstract void OutAbnormal(String serialNo, String plateNo);

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 调用计费规则异常处理通用处理
     */
    public void OutAbnormalAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.OutAbnormal(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.OutAbnormal(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.OutAbnormal(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.OutAbnormal(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.OutAbnormal(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.OutAbnormal(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.OutAbnormal(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.OutAbnormal(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.OutAbnormal(serialNo, plateNo);
        }
    }

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 无异常 无入场记录不抬杆
     */
    public abstract void OutAbnormalBan(String serialNo, String plateNo);

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 无异常 无入场记录不抬杆通用
     */
    public void OutAbnormalBanAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.OutAbnormalBan(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.OutAbnormalBan(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.OutAbnormalBan(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.OutAbnormalBan(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.OutAbnormalBan(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.OutAbnormalBan(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.OutAbnormalBan(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.OutAbnormalBan(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.OutAbnormalBan(serialNo, plateNo);
        }
    }

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 无异常 无入场记录免费放行
     */
    public abstract void OutAbnormalCan(String serialNo, String plateNo);

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 无异常 无入场记录免费放行通用
     */
    public void OutAbnormalCanAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.OutAbnormalCan(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.OutAbnormalCan(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.OutAbnormalCan(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.OutAbnormalCan(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.OutAbnormalCan(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.OutAbnormalCan(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.OutAbnormalCan(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.OutAbnormalCan(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.OutAbnormalCan(serialNo, plateNo);
        }
    }

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 停车费已支付处理
     */
    public abstract void OutPayParkingFee(String serialNo, String plateNo);

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 停车费已支付处理通用
     */
    public void OutPayParkingFeeAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.OutPayParkingFee(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.OutPayParkingFee(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.OutPayParkingFee(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.OutPayParkingFee(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.OutPayParkingFee(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.OutPayParkingFee(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.OutPayParkingFee(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.OutPayParkingFee(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.OutPayParkingFee(serialNo, plateNo);
        }
    }

    public abstract void FieldFee(String serialNo, String plateNo);
    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 场内码支付成功得
     */
    public void FieldFeeAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.FieldFee(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.FieldFee(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.FieldFee(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.FieldFee(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.FieldFee(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.FieldFee(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.FieldFee(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.FieldFee(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.FieldFee(serialNo, plateNo);
        }
    }

    public abstract void FieldFeeOut(String serialNo, String plateNo);
    /**
     * 临时车不收费出场
     * @param serialNo
     * @param plateNo
     */
    public void FieldFeeAllOut(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.FieldFeeOut(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.FieldFeeOut(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.FieldFeeOut(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.FieldFeeOut(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.FieldFeeOut(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.FieldFeeOut(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.FieldFeeOut(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.FieldFeeOut(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.FieldFeeOut(serialNo, plateNo);
        }
    }
    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 使用免费时长券/全免券/小时券的订单
     */
    public abstract void OutDiscount(String serialNo, String plateNo, DiscountCouponDetail discountCouponDetail);

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 使用免费时长券/全免券/小时券的订单通用
     */
    public void OutDiscountAll(String serialNo, String plateNo, DiscountCouponDetail discountCouponDetail) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.OutDiscount(serialNo, plateNo, discountCouponDetail);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.OutDiscount(serialNo, plateNo, discountCouponDetail);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.OutDiscount(serialNo, plateNo,discountCouponDetail);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.OutDiscount(serialNo,plateNo,discountCouponDetail);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.OutDiscount(serialNo, plateNo,discountCouponDetail);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.OutDiscount(serialNo, plateNo,discountCouponDetail);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.OutDiscount(serialNo, plateNo,discountCouponDetail);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.OutDiscount(serialNo, plateNo,discountCouponDetail);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.OutDiscount(serialNo, plateNo,discountCouponDetail);
        }
    }

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 储值车无入场纪录
     */
    public abstract void OutStoredNoInLogs(String serialNo, String plateNo);

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 储值车无入场纪录通用
     */
    public void OutStoredNoInLogsAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.OutStoredNoInLogs(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.OutStoredNoInLogs(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.OutStoredNoInLogs(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.OutStoredNoInLogs(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.OutStoredNoInLogs(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.OutStoredNoInLogs(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.OutStoredNoInLogs(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.OutStoredNoInLogs(serialNo, plateNo);
        }
    }

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 储值车缴费出场
     */
    public abstract void OutStoredPayFee(String serialNo, String plateNo, Integer unpayFee, Integer remaining, ParkOrderInfoVO parkOrderInfoVO);

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 储值车缴费出场通用
     */
    public void OutStoredPayFeeAll(String serialNo, String plateNo, Integer unpayFee, Integer remaining, ParkOrderInfoVO parkOrderInfoVO) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.OutStoredPayFee(serialNo, plateNo, unpayFee, remaining, parkOrderInfoVO);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.OutStoredPayFee(serialNo, plateNo, unpayFee, remaining, parkOrderInfoVO);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.OutStoredPayFee(serialNo, plateNo, unpayFee, remaining, parkOrderInfoVO);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.OutStoredPayFee(serialNo, plateNo, unpayFee, remaining, parkOrderInfoVO);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.OutStoredPayFee(serialNo, plateNo, unpayFee, remaining, parkOrderInfoVO);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.OutStoredPayFee(serialNo, plateNo, unpayFee, remaining, parkOrderInfoVO);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.OutStoredPayFee(serialNo, plateNo, unpayFee, remaining, parkOrderInfoVO);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.OutStoredPayFee(serialNo, plateNo, unpayFee, remaining, parkOrderInfoVO);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.OutStoredPayFee(serialNo, plateNo, unpayFee, remaining, parkOrderInfoVO);
        }
    }

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 调用计费规则异常处理
     */
    public abstract void OutStoredChargeAbnormal(String serialNo, String plateNo);

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 调用计费规则异常处理通用
     */
    public void OutStoredChargeAbnormalAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.OutStoredChargeAbnormal(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.OutStoredChargeAbnormal(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.OutStoredChargeAbnormal(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.OutStoredChargeAbnormal(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.OutStoredChargeAbnormal(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.OutStoredChargeAbnormal(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.OutStoredChargeAbnormal(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.OutStoredChargeAbnormal(serialNo, plateNo);
        }
    }

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 播报收费信息
     */
    public abstract void OutShowFee(String serialNo, String plateNo, ParkOrderInfoVO parkOrderInfo);

    /*
     * @author lcy
     * @date 2021/8/13
     * @Description 播报收费信息通用
     */
    public void OutShowFeeAll(String serialNo, String plateNo, ParkOrderInfoVO parkOrderInfo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.OutShowFee(serialNo, plateNo, parkOrderInfo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.OutShowFee(serialNo, plateNo, parkOrderInfo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.OutShowFee(serialNo, plateNo, parkOrderInfo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.OutShowFee(serialNo, plateNo, parkOrderInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.OutShowFee(serialNo, plateNo, parkOrderInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.OutShowFee(serialNo, plateNo, parkOrderInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.OutShowFee(serialNo, plateNo, parkOrderInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.OutShowFee(serialNo, plateNo, parkOrderInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.OutShowFee(serialNo, plateNo, parkOrderInfo);
        }
    }

    public abstract void RefuseCarEnter(String serialNo, String plateNo);

    /**
     * 入场确认开闸 拒绝 语音播报
     *
     * @param serialNo
     * @param plateNo
     * @return void
     * @author jdd孙庆伟
     * @date 2021/9/1 11:28:43
     * @version 1.0
     */
    public void RefuseCarEnterAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.RefuseCarEnter(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.RefuseCarEnter(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.RefuseCarEnter(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.RefuseCarEnter(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.RefuseCarEnter(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.RefuseCarEnter(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.RefuseCarEnter(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.RefuseCarEnter(serialNo, plateNo);
        }
    }

    public abstract void repeatRecognitionConfirmOpened(String serialNo, String plateNo);
    
    /**
     * @Title: repeatRecognitionConfirmOpenedAll  
     * @Description:重复识别播报确认开闸
     * @param serialNo
     * @param plateNo
     * @author: zjf
     * @date 2022年1月13日
     * @version 1.0
     */
    public void repeatRecognitionConfirmOpenedAll(String serialNo, String plateNo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.repeatRecognitionConfirmOpened(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.repeatRecognitionConfirmOpened(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.repeatRecognitionConfirmOpened(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.repeatRecognitionConfirmOpened(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.repeatRecognitionConfirmOpened(serialNo,plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.repeatRecognitionConfirmOpened(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.repeatRecognitionConfirmOpened(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.repeatRecognitionConfirmOpened(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.repeatRecognitionConfirmOpened(serialNo, plateNo);
        }
    }

    public abstract void OutMonthlyShowFee(String serialNo, String plateNo,String broadcastInfo);
    /**
     * @Title: repeatRecognitionConfirmOpenedAll  
     * @Description:汉江湾月租车出场播报方法
     * @param serialNo
     * @param plateNo
     * @author: zjf
     * @date 2022年1月13日
     * @version 1.0
     */
    public void customizedConfirmOpenedAll(String serialNo, String plateNo,String broadcastInfo) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            //fangkong.customizedConfirmOpened(serialNo, plateNo, broadcastInfo);
        	fangkong.OutMonthlyShowFee(serialNo, plateNo, broadcastInfo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.OutMonthlyShowFee(serialNo, plateNo,broadcastInfo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.OutMonthlyShowFee(serialNo,plateNo,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.OutMonthlyShowFee(serialNo,plateNo,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.OutMonthlyShowFee(serialNo,plateNo,broadcastInfo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.OutMonthlyShowFee(serialNo,plateNo,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.OutMonthlyShowFee(serialNo, plateNo,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.OutMonthlyShowFee(serialNo, plateNo,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.OutMonthlyShowFee(serialNo, plateNo,broadcastInfo);
        }
    }

    public abstract void outMonthlyEntrance (String serialNo, String plateNo,String broadcastInfo);
    /**
     * @return
     * @author lcy
     * @date 2021/8/12 11:52
     * @Description 月租车入场播报通用方法
     */
    public void outMonthlyEntranceAll(String serialNo, String plateNo,String broadcastInfo) throws IOException {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.outMonthlyEntrance(serialNo, plateNo,broadcastInfo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.outMonthlyEntrance(serialNo, plateNo,broadcastInfo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.outMonthlyEntrance(serialNo,plateNo,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.outMonthlyEntrance(serialNo,plateNo,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.outMonthlyEntrance(serialNo,plateNo,broadcastInfo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.outMonthlyEntrance(serialNo,plateNo,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.outMonthlyEntrance(serialNo, plateNo,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.outMonthlyEntrance(serialNo, plateNo,broadcastInfo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.outMonthlyEntrance(serialNo, plateNo,broadcastInfo);
        }
    }

    /**
     * 得到当前系统使用的sdk版
     *
     * @return com.jdd.modules.parking.entity.ConfigParkInfo
     * @author lcy
     * @date 2021/8/12 11:34
     */
    private ConfigParkInfo getConfigParkInfo() {

        return configParkInfoService.findConfigParkInfoByParkCode();
    }


    public void FieldFeeAllOut(String serialNo, String plateNo, Integer chargeDuration) {
        ConfigParkInfo configParkInfo = getConfigParkInfo();
        if (ObjectUtil.isNull(configParkInfo)) {
            log.info("车辆信息配置为空，请检查ConfigParkInfo配置是否存在");
            return;
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FANGKONG.equals(configParkInfo.getControlPanelType())) {
            fangkong.FieldFeeChargeDurationOut(serialNo, plateNo,chargeDuration);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_QIANYI.equals(configParkInfo.getControlPanelType())) {
            qianyi.FieldFeeOut(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_FEILIDE.equals(configParkInfo.getControlPanelType())) {
            feilide.FieldFeeOut(serialNo, plateNo);
        }
        if (JddConstant.CameraControl.CONTROLPANEL_XIAOMING.equals(configParkInfo.getControlPanelType())) {
            xiaoming.FieldFeeOut(serialNo,plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_QIXIE.equals(configParkInfo.getControlPanelType())){
            qixie.FieldFeeOut(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_SMALL_FANGKONG.equals(configParkInfo.getControlPanelType())){
            smallfangkong.FieldFeeOut(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_GREEN.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiGreen.FieldFeeOut(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_YANGZHONGLAI_BLUE.equals(configParkInfo.getControlPanelType())){
            yangZhongLaiBlue.FieldFeeOut(serialNo, plateNo);
        }
        if(JddConstant.CameraControl.CONTROLPANEL_ANKUAI.equals(configParkInfo.getControlPanelType())){
            anKuai.FieldFeeOut(serialNo, plateNo);
        }
    }
}
